iT邦幫忙

1

Linux FAQ : crontab 介紹

  • 分享至 

  • xImage
  •  

排程 crontab 簡介

參考 : https://ubuntuqa.com/zh-tw/article/10392.html

設定一個定時啟動程序

  • 簡介
情境 : 寫一支一直檢查 系統狀況程序 
然後想設定 何時才檢查
那麼可以用 Linux 提供的設置 crontab 
登入 用戶後
輸入 crontab -e 
( 預設是 vi 編輯器 )
開始編輯吧 
  • 常用
crontab -l 查看自己的 crontab

crontab -u 名稱 -l 顯示特定使用者 crontab

crontab -e 編輯 crontab

crontab -u 名稱 -e 編輯特定使用者 crontab

crontab -r 刪除全部的 crontab
  • 範例
#every 3 minute run abc015
*/3 * * * * . /u1/etc/chenv 2; sh abc015 >>/u1/123/app/4xx/abc015_log.log 2>&1

#日期寫log
"/u1/123/app/4xx/$(date +"\%Y\%m\%d")_abc015.log" 2>&1

#每小時執行程式
* */1 * * * . /u1/etc/chenv 2; sh abc022 >> "/u6/123/sync_tmp/abc022_log/$(date +"\%Y\%m\%d")_abc022.log" 2>&1

注意事項

Linux 排程也不能設定太多 
要根據系統負載 評估
主要是因為 Linux 啟動排程是呼叫 watch dog 來帶起程序
如太多 會在同一時間看到 有 一堆 watch dog 
系統資源太低 很容易造成 整個 Linux 卡頓

watch dog
({AVEQ_6IS4J JIH3WT0YZA

  • 其他設定介紹

image

image

image

排程更新

ex - /var/spool/cron/root <<%%
a
*/1 * * * * sh /u3/bin/abc.sh
.
wq!
%%

排程執行目錄

登入 root 查看

/var/log/cron

image

搜尋想找的程序名稱 , 會看到幾點有運行

image

除了⼀般使⽤者各⾃的排程⼯作之外,

還有⼀類的是屬於系統的排程⼯作,這類的設定寫在

/etc/crontab 檔案與 /etc/cron.d/ ⽬錄下的各個設定檔

多了⼀個使⽤者名稱

image

限制使⽤者使⽤ crontab

系統安全性的考量,限制只有特定的使⽤者可以使⽤ crontab ,
可以透過系統的 /etc/cron.allow 或 /etc/cron.deny 兩個檔案來設定。
/etc/cron.allow
這個檔案存在,則只有被列在這裡的帳號可以使⽤ crontab ,其餘帳號皆禁⽌使⽤,
也就是⽩名單。
/etc/cron.deny
如果這個檔案存在,則被列在這裡的使⽤者都禁⽌使⽤ crontab ,也就是⿊名單。
/etc/cron.allow 與 /etc/cron.deny 設定檔在列出帳號時,語法都相同,每⼀⾏寫⼀個帳號名稱。
如果 /etc/cron.allow 與 /etc/cron.deny 兩個設定檔都不存在,則就只有系統管理者
root 能夠使⽤ crontab

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
obarisk
iT邦研究生 1 級 ‧ 2022-11-17 12:00:08

在有 systemd 的系統上,也可以考慮 systemd-timer
這樣就不用多跑一個守護進程

對 , 設置 Linux service 也可達到類似功能
因為 crontab 在啟動時 Linux 會呼叫 watch dog
如設定太多 排程 ( crontab ) 也會在一瞬間因為
watch dog 影響系統資源

多謝大神指點
/images/emoticon/emoticon34.gif

obarisk iT邦研究生 1 級 ‧ 2022-11-18 11:39:45 檢舉

昨天突然發現 Debian 上有一個叫做 systemd-cron 的套件
找時間試看看

我要留言

立即登入留言